package com.hemerasolutions.v2trainer.dao.interfaces;


import java.util.List;

import org.apache.commons.lang.mutable.MutableInt;

import com.hemerasolutions.v2trainer.dao.ExceptionDao;
import com.hemerasolutions.v2trainer.model.multimedia.RemoteVideo;


public interface RemoteVideoDaoInterface extends BaseDaoInterface<RemoteVideo> {

	public abstract RemoteVideo findByRemoteVideoHashId(String videoHashCode);

	public abstract List<RemoteVideo> persistInRemoteStorage(List<RemoteVideo> remoteVideos, MutableInt progress)
			throws ExceptionDao;

	public abstract String checkAlreadyInYouTube(String videoHashCode);

	public abstract List<com.google.api.services.youtube.model.Video> listVideosInYouTube() throws ExceptionDao;

	public abstract void deleteYouTubeVideos(List<RemoteVideo> remoteVideos)
			throws ExceptionDao;

	public abstract void deleteYouTubeVideo(RemoteVideo remoteVideo) throws ExceptionDao;

	public abstract List<RemoteVideo> listVideosInYouTubeAndDb() throws ExceptionDao;

	public abstract List<RemoteVideo> findByStorageId(String storageId);

	public abstract RemoteVideo persistInRemoteStorage(RemoteVideo remoteVideo)
			throws ExceptionDao;

	public abstract RemoteVideo persistInRemoteStorage(RemoteVideo remoteVideo, MutableInt progress)
			throws ExceptionDao;

	public abstract void disconnect() throws ExceptionDao;

	public abstract RemoteVideo getByUuid(long uuid);




}